#!/usr/bin/env bash
arch=arm
while getopts 'a:' OPT; do
  case "$OPT" in
    a)
      arch="$OPTARG"
      ;;
  esac
done
shift "$(($OPTIND - 1))"
outdir="$(pwd)/buildroot/output.${arch}-gem5~"
gem5_dir="$(pwd)/gem5/gem5"
if [ "$arch" = x86_64 ]; then
  cmd="\
M5_PATH='$(pwd)/gem5/gem5-system' \
'${gem5_dir}/build/X86/gem5.opt' \
'${gem5_dir}/configs/example/fs.py' \
--disk-image='${outdir}/images/rootfs.ext2' \
--kernel='${outdir}/build/linux-custom/vmlinux' \
--root-device=/dev/sda \
"
elif [ "$arch" = arm ]; then
  cmd="\
M5_PATH='$(pwd)/gem5/gem5-system' \
'${gem5_dir}/build/ARM/gem5.opt' \
'${gem5_dir}/configs/example/fs.py' \
--disk-image='${outdir}/images/rootfs.ext2' \
--dtb-file='${gem5_dir}/system/arm/dt/armv7_gem5_v1_1cpu.dtb' \
--kernel='${outdir}/build/linux-custom/vmlinux' \
--machine-type=VExpress_GEM5_V1 \
--root-device=/dev/sda \
"
fi
cmd="$cmd \"\$@\""
echo "$cmd"
eval "$cmd"
